package iluminados.cine.pe.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Collection;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import iluminados.cine.pe.dao.interfaces.SugerenciaDAOInt;
import iluminados.cine.pe.excepcion.DAOExcepcion;
import iluminados.cine.pe.model.Sugerencia;
@Service
public class SugerenciaDAOImp implements SugerenciaDAOInt {
    @Autowired
	private DataSource datasource; 
	
	@Override
	public Collection<Sugerencia> buscarxPosteo(String auxtitulo)
			throws DAOExcepcion {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Sugerencia insertarSugerencia(Sugerencia auxsug) throws DAOExcepcion {
		String cadsql = "insert into Sugerencia(idsugerencia, descripcion, status," +
				"fecregistro,fecatencion,siatendido)values(?,?,?,?,?,?)";
		Connection cnx= null;
		PreparedStatement ps= null;
		try{
			cnx = datasource.getConnection();
			ps = cnx.prepareStatement(cadsql);
			//Preparamos la inyeccion de informacion
			ps.setInt(1, auxsug.getIdSugerencia());
			ps.setString(2, auxsug.getDescripcion());
			ps.setString(3, auxsug.getStatusPuedeSugerir());
			ps.setString(4, auxsug.getFecRegistro());
			ps.setString(5, auxsug.getFecAtencion());
			ps.setString(6, auxsug.getSiAtendido());
			//ps.setArray(7, (ArrayList)auxsug.getArrSugerencias());
			ps.execute();
			auxsug = new Sugerencia(auxsug.getIdSugerencia(), auxsug.getDescripcion(), auxsug.getStatusPuedeSugerir(), auxsug.getFecRegistro(), auxsug.getFecAtencion(), auxsug.getSiAtendido());
			return auxsug;
		}catch(SQLException e){
			throw new RuntimeException("Error al insertar una nueva sugerencia", e);
		}finally {
			if (ps != null) {
				try {
					// Close to prevent database cursor exhaustion
					ps.close();
				} catch (SQLException ex) {
				}
			}
			if (cnx != null) {
				try {
					// Close to prevent database connection exhaustion
					cnx.close();
				} catch (SQLException ex) {
				}
			}
			}
		}
	
	

	@Override
	public Sugerencia obtenerData(int idsug) throws DAOExcepcion {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void eliminarSugerencia(int idsug) throws DAOExcepcion {
		// TODO Auto-generated method stub

	}

	@Override
	public Sugerencia actualizarSugerencia(Sugerencia auxsug)
			throws DAOExcepcion {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Collection<Sugerencia> volcarCategoria() throws DAOExcepcion {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public int conteoSugerencia() {
		String cadsql = "select count(*) from sugerencia";
		Sugerencia objsug = null;
		int conteo =0;
		Connection cnx = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try{
			cnx = datasource.getConnection();
			ps = cnx.prepareStatement(cadsql);
			rs = ps.executeQuery(cadsql);
			//Hacemos ejecucion para contar la cantidad de filas
		}catch(SQLException e){
			throw new RuntimeException("No hay ningun registro", e);
		}finally {
			if (rs != null) {
				try {
					// Close to prevent database cursor exhaustion
					rs.close();
				} catch (SQLException ex) {
				}
			}
			if (ps != null) {
				try {
					// Close to prevent database cursor exhaustion
					ps.close();
				} catch (SQLException ex) {
				}
			}
			if (cnx != null) {
				try {
					// Close to prevent database connection exhaustion
					cnx.close();
				} catch (SQLException ex) {
				}
			}
		}
		return 0;
	}
	
}
